package cn.zyl.bsbdj.common.task;

import cn.zyl.bsbdj.service.CrawlerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

//组件 Spring的 四个组件会被IOC加载，@Controller @Service @Respository @Compinent
@Component
public class CrawlerTask {

    Logger logger = LoggerFactory.getLogger(CrawlerTask.class);
    @Resource
    private CrawlerService crawlerService;

    //任务执行方法
    //@Scheduled用于指定当前方法是一个任务调度 cron表达式制定了执行的间隔
    //* * * * * ? 代表每秒执行一次
    // 秒 分  时  日  月  星期
    //*代表任一时间  具体的数字代表精确值   ，用于多个值   /用于固定间隔  -范围
    //0 * 23 * * ? 每天23点到24点之间每分钟执行一次
    //0 0 8-18 * ？  每天早上八点到下午六点，0分0秒准时执行一次
    @Scheduled( cron = "0 0 * * * ?")
    public void  crawlorRunner(){
        //抓取原始数据
        //template URL模板
        //推荐、视频、图片、笑话、排行榜
        String [] tmeplates = new String[]{
                "http://c.api.budejie.com/topic/list/jingxuan/1/budejie-android-6.9.4/{np}-20.json?market=xiaomi&ver=6.9.4&visiting=&os=6.0&appname=baisibudejie&client=android&udid=864141036474044&mac=02%3A00%3A00%3A00%3A00%3A00",
                "http://c.api.budejie.com/topic/list/jingxuan/41/budejie-android-6.9.4/{np}-20.json?market=xiaomi&ver=6.9.4&visiting=&os=6.0&appname=baisibudejie&client=android&udid=864141036474044&mac=02%3A00%3A00%3A00%3A00%3A00",
                "http://c.api.budejie.com/topic/list/jingxuan/10/budejie-android-6.9.4/{np}-20.json?market=xiaomi&ver=6.9.4&visiting=&os=6.0&appname=baisibudejie&client=android&udid=864141036474044&mac=02%3A00%3A00%3A00%3A00%3A00",
                "http://c.api.budejie.com/topic/list/jingxuan/29/budejie-android-6.9.4/{np}-20.json?market=xiaomi&ver=6.9.4&visiting=&os=6.0&appname=baisibudejie&client=android&udid=864141036474044&mac=02%3A00%3A00%3A00%3A00%3A00",
                "http://s.budejie.com/topic/list/remen/1/budejie-android-6.9.4/{np}-20.json?market=xiaomi&ver=6.9.4&visiting=&os=6.0&appname=baisibudejie&client=android&udid=864141036474044&mac=02%3A00%3A00%3A00%3A00%3A00"
        };

        for( int i=0 ;i <tmeplates.length; i++ ){
            logger.info("正在抓取第{}个模块的数据",(i+1));
            String template = tmeplates[i];
            Map context = new HashMap();
            context.put("count",0);//记录抓取的总数
            crawlerService.crawl( context,template,"0", (i+1));
        }
        //对source表数据进行处理
        crawlerService.etl();
    }
}
